讲堂 | 谭旭:AI音乐,技术与艺术的碰撞
大家好!我是微软亚洲研究院主管研究员谭旭,这次报告的题目是“基于深度学习的流行音乐创作”,我们将详细探讨如何将深度学习应用到流行音乐的创作过程中。我们先来看一下流行音乐的创作流程是什么样的。
什么是流行音乐?按照字面的理解就是流行的音乐,实际上流行音乐我们通常指的是商品音乐,也就是通俗、大众、喜闻乐见,又能商品化制作的音乐。因此,这类音乐具有固定的制作流程,包括词曲创作、伴奏编曲、录制乐器声音和人声、进行混音,最后进入到唱片制作等环节。而这是典型的工业制作流程,我们需要将其进行抽象以便在音乐创作中充分利用深度学习技术。
经过抽象我们得到了以下三个环节:
1)曲谱生成,包括词曲和伴奏编曲的生成;
2)演奏生成,曲谱到声音需要经过演奏的过程,相同的曲谱经过不同的演奏技巧演奏可以有非常大的差别,所以我们要基于曲谱生成演奏技巧;
3)声音合成,根据曲谱和演奏技巧合成音乐声音,包括人声和乐器声音的合成。
有了这个抽象以后,深度学习技术尤其是内容生成技术就可以应用到流行音乐的创作中了。其实音乐不只是艺术,它还包括逻辑和规则,而这些都是深度学习所擅长的。如果有足够的数据、模型容量和计算力,深度学习就能产生比较好的效果。所以我们可以把上述流程对应到典型的深度学习应用任务上。曲谱和演奏技巧的生成,可以对应自然语言处理里的语言生成,因为它们就是用 symbolic token 符号表示,而声音生成则可以对应到语音合成,这样我们就能借鉴这些成熟领域的深度学习技术来帮助音乐生成了。
过去一段时间,微软亚洲研究院在 AI 音乐创作方向上开展了一系列研究工作,包括 Song Writing(词曲写作)、Arrangement(伴奏生成)、Singing Voice Synthesis(歌声合成)等。在词曲写作方面又涵盖了:1) SongMASS,歌词到旋律以及旋律到歌词的生成;2) StructMelody,利用音乐结构信息生成旋律;3) DeepRapper,Rap歌词押韵和节奏的生成;4) MusicBERT,通过大规模音乐数据学习音乐表征以更好的理解音乐,对音乐的风格、情感、曲式结构的理解。在伴奏编曲方面有 PopMAG 伴奏生成。在歌声合成方面有 HiFiSinger 高保真的歌声合成。接下来,我们将依次介绍这些工作。
在词曲写作方面,我们探讨了歌词生成旋律以及旋律生成歌词两个任务,并分析了这两个任务的特点:
1. 要保证生成的歌词和旋律本身具有歌词性和旋律性。这个方面靠大量的数据做语言模型的建模可以做得还不错;
2. 要保证歌词和旋律的匹配度。按照传统的术语讲就是腔词关系 (腔就是旋律、词就是歌词),好的腔词关系能互相促进表达,而不好的腔词关系会导致腔害于词、词害于腔。
因此,建模歌词和旋律的关系是一个重点。要建模好关系,很重要的一个因素是要有数据,但往往歌词和旋律的配对数据比较缺乏。除此之外,歌词和旋律的连接也比较弱,一句歌词可以配不同的旋律,一句旋律也可以配不同的歌词。类比其它序列到序列学习的任务,比如语音识别、语音合成、机器翻译等,我们可以发现源序列和目标序列都有很强的对应关系。在语音识别中,一个语音片段会严格对应一个字。所以歌词和旋律这种弱的连接关系更加需要数据才能学得好,或者我们可以探索不用纯依赖数据的方发去学习这种关系。
我们可以从两方面去考虑上述问题,一方面是纯粹基于深度学习的方法,从数据中去学习。另一方面是利用先验知识,因为人类在创作歌曲时也是需要学习很多音乐知识的,比如音调、节奏、结构、曲式等,通过把音乐知识和深度学习相结合,可以更好地建模歌词和旋律的关系。
首先介绍 SongMASS,它是纯粹靠数据驱动,用深度学习来建模歌词和旋律关系的方法。因为歌词和旋律是弱耦合关系,缺乏数据,所以我们利用了预训练,通过无监督、自监督、半监督的方法从无标签数据中学习以弥补数据不足。歌词和旋律虽然在内容上是弱耦合,但它们之间需要严格对齐,一个字或者音节需要对应到具体的音符。为此,我们提出了通过序列到序列学习的 encoder-attention-decoder 里的 attention 来抽取对齐关系。
预训练采用了我们之前提出的 Masked Sequence to Sequence Pre-training (MASS) 方法,将歌词和旋律分别看成是自然语言的一个段落,每句歌词和旋律对应一个句子。再从源句子掩盖一个片段,然后在解码器预测这个片段,通过这样的方法我们就可以学习数据的知识了。
同时我们给 encoder-decoder attention 施加了一些约束,让它能学习到歌词和旋律的对齐关系。我们分别施加了句子级别和词级别的约束,让它呈现一个单调递增的对角线形式。在预测过程中,可以从 attention 里抽取得到这个对齐关系。
我们从客观和主观评价的方式分别评估了 SongMASS 和基线方法的效果,在两个评价方式上,SongMASS 都取得了比基线方法好很多的效果,具体实验结果可参考 SongMASS 论文(论文链接:https://arxiv.org/pdf/2012.05168.pdf),更多的生成样例可参见 demo 网页:https://speechresearch.github.io/songmass/ 。
接下来介绍基于音乐知识辅助的深度学习方法实现的歌词到旋律的生成。有哪些音乐知识能够帮助歌词到旋律的生成呢?这里大概包括以下几个维度:音调、节奏、结构等。
我们先来看一下这些知识应用得不好会产生什么样的问题。首先是音调的知识,我们的原则是保证歌词和旋律的音调要一致,不能相违背,比如《故乡的云》中“归来吧”听起来像是“鬼来吧”,而《你知道我在等你吗》中“你知道我在等你吗?”听起来像是“你知道我在等你妈!”。导致这个问题产生的原因就是因为歌词和旋律的声调不一致。
第二个是节奏知识,我们说重要的歌词要重拍、要高音、要持续。一个好的例子就是《明明白白我的心》,里面的“愿意”和“靠近”,对应的旋律就做到了强调。第三方面是结构知识,这里我们需要考虑歌词的语句和旋律的语句要对应,起承转合要对应,还要考虑旋律本身的重复、模进以及曲式结构。我们开展了相应的工作来利用这些音乐知识帮助旋律生成得更好。
我们的 StructMelody 工作利用音乐的结构信息实现了歌词到旋律的生成。我们构建了一个两阶段的旋律生成方法,利用结构信息作为歌词和旋律的桥梁。首先从歌词中提取结构信息,然后从结构信息生成旋律。第二阶段的结构信息生成旋律则可以利用自监督的方法,也就是从旋律中抽取结构,然后再训练结构到旋律的序列到序列模型。我们只需要让第一阶段生成的结构和第二阶段的结构尽量一致就可以。
举个例子,我们对古诗词《春晓》进行了谱曲,从歌词抽取的结构信息包括节奏和小节划分等信息,然后再配上和弦生成旋律。古诗词一般具有固定的格律,所以可以人工设计规则,而对于不规则的歌词,比如散文诗,就需要通过学习的方法预测结构信息了。
除了我们前面考虑的结构信息以外,还有一个非常重要的信息就是曲式结构,这个对于生成一首完整的旋律非常重要。我们常见的曲式结构有单一、单二、单三、回旋、变奏、奏鸣曲式以及流行音乐常见的主副歌结构,这些信息非常有助于音乐的生成。同时也需要考虑一首歌的情绪推动,起承转合,比如下图上这种经典的稳定开始、变化扩张、紧张运动、稳定结束的形式,还需要对旋律的情感、情绪做出理解。而这些知识都需要有对音乐的理解。
因此,我们开展了 MusicBERT 工作,利用大规模音乐数据进行预训练,从而更好地理解音乐,包括情感分类、流派分类、旋律伴奏抽取、结构分析等。
为了能够开展大规模的预训练,我们构建了一个大规模的音乐数据集 MMD 包含150万首音乐数据,比之前的音乐数据集大10倍。然后针对音乐理解任务我们提出了 OctupleMIDI 这种编码方式,其中含有8种基本的 token,包括拍号、速度、小节、位置、乐器、音高、时长、速度等。相比之前的 REMI、CP 等,编码方式 OctupleMIDI 能极大地缩短音乐序列长度,同时还可以容纳足够的音乐信息。更短的序列长度可以使模型一次性处理更长的音乐片段,从而提升模型对音乐的理解能力。
我们使用了 BERT 的 Masked Language Modeling 训练方式,采用了 bar-level 的掩码策略,即一次性掩盖一个小节内相同类型的 token,以防止信息泄露。
MusicBERT 模型结构采用了基本的 Transformer,同时在模型的输入和输出上针对 OctupleMIDI 的编码做了一些特殊的设计——输入时将8个 token 的 embedding 拼接后通过一个线性层映射到模型的隐层维度,在输出时接8个 softmax 矩阵分别预测相应的 token。
MusicBERT 在三个下游任务:Melody Completion、Accompaniment Completion 和 Genre Classification 上取得了 SOTA 的效果,远超以前的音乐理解模型。
在伴奏编曲的生成方面,我们进行了 PopMAG 这个工作。PopMAG 处理的任务形式是给定主旋律和和弦进而生成不同乐器的伴奏,包括鼓、贝斯、吉他、键盘、弦乐等。这其中的一个难点就是要保证多轨音乐的和谐。因此,我们提出了MuMIDI 的编码方式,将多轨音乐编码到一个序列里,使得多轨音乐生成变成了单个序列的生成,这样自然地建模了不同轨音符之间的依赖关系。
我们在三个数据集上评估了 PopMAG 的伴奏生成效果,根据人的主观评测,生成的伴奏已经比较接近真实的伴奏了。
针对歌声合成,我们做了 HiFiSinger 的工作。事实上,和说话的声音相比,歌声需要更高的保真度来传达表现力和情感。那么怎么实现高保真度呢?一个方面是提高声音质量,另一方面是提高声音的采样率。
之前的工作大都关注在提高声音质量,而我们考虑的是提高采样率。我们知道人耳对频率的感知范围为20到20kHz,如果采用16kHz或者24kHz的采样率的话,根据奈奎斯特-香农采样定理,它只能覆盖8kHz或者12kHz的频带范围,并不能很好地覆盖人耳的听觉范围。因此我们将采样率从24kHz升到48kHz来进行建模。
整个歌声合成的流程采用了声学模型和声码器级联的方式,如下图(右)所示。但是升级到48kHz的采样率有两个挑战:1)48kHz在频谱维度有更宽的频谱,这给声学模型的建模带来了挑战;2)48kHz在时间维度上有更长的语音采样点,这给声码器的建模带来了挑战。
所以,我们分别提出了针对声学模型的 Sub-frequency GAN 和针对声码器的 Multi-length GAN来解决上述问题。
实验结果显示 HiFiSinger 相比之前的基线方法取得了明显的音质提升,表明了我们的方法对高采样率建模的有效性。同时采用48kHz采样率的 HiFiSinger 模型甚至超过了24kHz的录音音质,也证明了高采样率的优势。
以上就是我们在 AI 音乐生成方面开展的一系列研究工作。目前 AI 音乐生成仍存在一些研究挑战,包括以下几个方面:1)对音乐结构的理解有助于音乐的生成以及编排;2)音乐的情感以及风格的建模;3)交互式的音乐创作;4)对于生成音乐原创性的保证等。
微软亚洲研究院机器学习组一直致力于 AI 音乐的研究,研究课题包括词曲写作、伴奏编曲、歌声合成、音乐理解等。我们即将推出 AI 音乐开源项目 Muzic,涵盖了我们在 AI 音乐的一系列研究工作,敬请期待。
AI 音乐研究项目主页:
https://www.microsoft.com/en-us/research/project/ai-music/
Muzic 开源项目页面(页面将于近期公开):
https://github.com/microsoft/muzic
论文列表:
[1] SongMASS: Automatic Song Writing with Pre-training and Alignment Constraint, AAAI 2021, https://arxiv.org/pdf/2012.05168.pdf
[2] DeepRapper: Neural Rap Generation with Rhyme and Rhythm Modeling, ACL 2021, https://arxiv.org/pdf/2107.01875.pdf
[3] MusicBERT: Symbolic Music Understanding with Large-Scale Pre-Training, ACL 2021, https://arxiv.org/pdf/2106.05630.pdf
[4] PopMAG: Pop Music Accompaniment Generation, ACM MM 2020, https://arxiv.org/pdf/2008.07703.pdf
[5] HiFiSinger: Towards High-Fidelity Neural Singing Voice Synthesis, arXiv 2021, https://arxiv.org/pdf/2009.01776.pdf
相关链接:
https://www.microsoft.com/en-us/research/project/ai-music/
https://www.bilibili.com/video/BV1Kg411G78m
https://github.com/microsoft/muzic
你也许还想看: